\documentclass[12pt]{report}
\usepackage[utf8x]{inputenc}
\usepackage{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{picinpar}
\usepackage{wrapfig}
\usepackage[section]{placeins}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage[nottoc, notlof, notlot]{tocbibind}
\usepackage{amssymb}
\usepackage{multicol}
\usepackage{alltt}
\usepackage{url}
\hypersetup{
     backref=true,    %permet d'ajouter des liens dans...
     pagebackref=true,%...les bibliographies
     hyperindex=true, %ajoute des liens dans les index.
     colorlinks=true, %colorise les liens
     breaklinks=true, %permet le retour à la ligne dans les liens trop longs
     urlcolor= blue,  %couleur des hyperliens
     linkcolor= blue %couleur des liens internes
}
\newlength{\plarg}
\setlength{\plarg}{14cm}
\newlength{\glarg}
\setlength{\glarg}{17cm}


\begin{document}
\begin{titlepage}
\thispagestyle{empty}
\begin{center}
\begin{minipage}{\plarg}
\vspace{2cm} \centering
Master 1 Alma\\
2011- 2012 \vspace{1cm}
\end{minipage}
\end{center}

\begin{center}
\begin{minipage}{\plarg}
\vspace{2cm} \centering
\rule{\linewidth{}}{0.3mm}\\
\vspace{1mm}
{\huge Implémentation d'une bibliothèque STL \\ }
\vspace{5mm}
\rule{\linewidth{}}{0.3mm}\\
\bsc{Babinot} Alexandre\\
\bsc{Bizet} Jonathan\\
\bsc{Lau Fat} Mihirai\\
\bsc{Guilet} Pierre
\end{minipage}
\end{center}



\vfill \hspace{-1cm}
\begin{minipage}{\glarg}
{\rule{\plarg}{0.5pt}}\\
 \footnotesize{Professeurs Encadrants:}\\
 \small{Mr \bsc{Granviller} Laurent}\\
\small{Mr  \bsc{Jermann} Christophe}
\end{minipage}
\end{titlepage}

\tableofcontents{}

\chapter{Introduction}
%Le projet consiste à réaliser une application permettant d'ordonnancer des taches périodiques et aperiodiques, controllée et aléatoire. 
%Le plan de ce rapport est le suivant
Dans le domaine des biblitohèques STL, il existe de nombreuses propriétés communes: Insertion, suppression, recherche et itérateurs en sont quelque-unes. Le but de ce TP est donc d'implementer une structure de tas binaire et une structure de BArbres. ces implémentations seront ensuite interfacées pour permettre de les inclure dans la STL.
Les concepts à implémenter sont:
\begin{itemize}
 \item Les tas binaires
 \item Les BArbres
\end{itemize}

Le projet qui a été décomposé en deux parties distinctes:


\paragraph{}--La première partie avait pour but l'implementation des tas binaires et des BArbres en C++.

 

\paragraph{}--La deuxième partie avait pour but la création d'une interface afin de regrouper tas binaire et BArbres afin de les implementer in fine à la STL.


\paragraph{} La suite de ce rapport sera articulé de la manière suivante:

Tout d'abord présentation détaillée de la première partie pour chacune des implémentations:

\begin{itemize}
 \item Description
 \item Analyse
 \item Structure du programme
\end{itemize}

\paragraph{} Puis une présentation de la présentation de la deuxième partie du projet.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Partie I%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\include{tasbinaire}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fin Partie I%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\include{barbre}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Mise en commun%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Mise en commun}
L'une des partie du projet consistait à repérer les comportements communs des deux arbres que nous avons implémenté au préalable.

Ci-dessous une présentation des comportements en communs des deux structures.
%TODO rajouter le tableau

\section{Analyse}
La mise en commun des deux interfaces des arbres nous permettent d'extraire des comportements en communs suivantes :
\begin{itemize}
 \item Ajout
 \item Suppression
 \item Fournir des itérateurs
\end{itemize}

En C++ les interfaces sont des classes implémentant au moins une fonction virtuelle pure c'est-à-dire des fonctions qui n'ont pas d'implémentations et qui sont spécialisées
par des classes concrètes. Notre interface arbre est une classe abstraite dont toutes les opérations sont des fonctions virtuelles pures et les opérations d'ajout et de suppression seront
spécialisées par les classes concrètes tas binaire et b-arbre.

\chapter{Implémentation à la STL}
Le but principal du projet était d'implémenter une STL permettant de hiérarchiser toutes les structures d'arbres existantes. En dénombrant toutes les structures d'arbres existantes nous avons
put en dégager le diagramme\ref{fig:DiagClass}
\begin{center}
 
\begin{figure}
    
    \label{fig:DiagClass}
   \includegraphics[scale=0.5]{../uml/class}
  \caption{Diagramme de classe}
  
\end{figure}

\end{center}


\section{Analyse}
En haut de la hiérarchie se trouve la classe abstraite arbre qui est une interface que doit implémenter toutes ses classes filles. Comme nous l'avons dit précédemment il faut garder en tête qu'un arbre est un conteneur
permettant l'ajout, la suppression de valeurs mais ces comportements seront spécifiques aux classes filles, exemple : L'ajout dans un tas binaire n'est pas que le même que l'ajout dans les b-arbres

\paragraph{}
De plus la classe itérateur est une classe \emph{friend} de notre interface arbre. Elle fournit une interface standard aux classes filles d'arbre souhaitant implémenter des itérateurs spécifiques à leurs comportements.
Par exemple l'itérateur pour les tas et l'itérateur pour les b-arbres ont la même interface mais n'ont pas le même comportement.

\paragraph{}
Dans la suite du rapport nous nous efforcerons d'expliciter le comportement spécifique de toutes les classes filles et les itérateurs de notre interface.

\include{arbrebinaire}
\include{arbrenaire}
\include{tasfusionable}
\chapter{Conclusion}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  

\end{document}
